home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / a_utils / yacc / flexyacc / aflex.lha / aflex / src / tblcmpS.a < prev    next >
Text File  |  1991-05-16  |  4KB  |  97 lines

  1. -- Copyright (c) 1990 Regents of the University of California.
  2. -- All rights reserved.
  3. --
  4. -- This software was developed by John Self of the Arcadia project
  5. -- at the University of California, Irvine.
  6. --
  7. -- Redistribution and use in source and binary forms are permitted
  8. -- provided that the above copyright notice and this paragraph are
  9. -- duplicated in all such forms and that any documentation,
  10. -- advertising materials, and other materials related to such
  11. -- distribution and use acknowledge that the software was developed
  12. -- by the University of California, Irvine.  The name of the
  13. -- University may not be used to endorse or promote products derived
  14. -- from this software without specific prior written permission.
  15. -- THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
  16. -- IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  17. -- WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  18.  
  19. -- TITLE table compression routines
  20. -- AUTHOR: John Self (UCI)
  21. -- DESCRIPTION used for compressed tables only
  22. -- NOTES somewhat complicated but works fast and generates efficient scanners
  23. -- $Header: /co/ua/self/arcadia/aflex/ada/src/RCS/tblcmpS.a,v 1.3 90/01/12 15:20:47 self Exp Locker: self $ 
  24.  
  25. with MISC_DEFS; use MISC_DEFS; 
  26.  
  27. package TBLCMP is 
  28.  
  29. -- bldtbl - build table entries for dfa state
  30.  
  31.   procedure BLDTBL(STATE                                   : in 
  32.                      UNBOUNDED_INT_ARRAY; 
  33.                    STATENUM, TOTALTRANS, COMSTATE, COMFREQ : in INTEGER); 
  34.  
  35.   procedure CMPTMPS; 
  36.  
  37.   -- expand_nxt_chk - expand the next check arrays
  38.  
  39.   procedure EXPAND_NXT_CHK; 
  40.  
  41.   -- find_table_space - finds a space in the table for a state to be placed
  42.  
  43.   function FIND_TABLE_SPACE(STATE    : in UNBOUNDED_INT_ARRAY; 
  44.                             NUMTRANS : in INTEGER) return INTEGER; 
  45.  
  46.   -- inittbl - initialize transition tables
  47.  
  48.   procedure INITTBL; 
  49.  
  50.   -- mkdeftbl - make the default, "jam" table entries
  51.  
  52.   procedure MKDEFTBL; 
  53.  
  54.   -- mkentry - create base/def and nxt/chk entries for transition array
  55.  
  56.   procedure MKENTRY(STATE                                   : in 
  57.                       UNBOUNDED_INT_ARRAY; 
  58.                     NUMCHARS, STATENUM, DEFLINK, TOTALTRANS : in INTEGER); 
  59.  
  60.   -- mk1tbl - create table entries for a state (or state fragment) which
  61.   --            has only one out-transition
  62.  
  63.   procedure MK1TBL(STATE, SYM, ONENXT, ONEDEF : in INTEGER); 
  64.  
  65.   -- mkprot - create new proto entry
  66.  
  67.   procedure MKPROT(STATE              : in UNBOUNDED_INT_ARRAY; 
  68.                    STATENUM, COMSTATE : in INTEGER); 
  69.  
  70. -- mktemplate - create a template entry based on a state, and connect the state
  71.   --              to it
  72.  
  73.   procedure MKTEMPLATE(STATE              : in UNBOUNDED_INT_ARRAY; 
  74.                        STATENUM, COMSTATE : in INTEGER); 
  75.  
  76.   -- mv2front - move proto queue element to front of queue
  77.  
  78.   procedure MV2FRONT(QELM : in INTEGER); 
  79.  
  80.   -- place_state - place a state into full speed transition table
  81.  
  82.   procedure PLACE_STATE(STATE              : in UNBOUNDED_INT_ARRAY; 
  83.                         STATENUM, TRANSNUM : in INTEGER); 
  84.  
  85.   -- stack1 - save states with only one out-transition to be processed later
  86.  
  87.   procedure STACK1(STATENUM, SYM, NEXTSTATE, DEFLINK : in INTEGER); 
  88.  
  89.   -- tbldiff - compute differences between two state tables
  90.  
  91.   procedure TBLDIFF(STATE  : in UNBOUNDED_INT_ARRAY; 
  92.                     PR     : in INTEGER; 
  93.                     EXT    : out UNBOUNDED_INT_ARRAY; 
  94.                     RESULT : out INTEGER); 
  95.  
  96. end TBLCMP; 
  97.